<!--
Copyright 2013 Google Inc. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<!DOCTYPE html><meta charset="UTF-8">

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <path d="M0,0 L10,0 L30,0 L60,0 L100,0 L150,0" id="path" stroke="black"
      stroke-width="1" fill="none" />
</svg>

<script src="../bootstrap.js"></script>
<script>
"use strict";

var PacedTimingFunction = _WebAnimationsTestingUtilities._pacedTimingFunction;

var effect =
    new MotionPathEffect(document.querySelector('#path').pathSegList);

// Line has 5 segments of lengths 10, 20, 30, 40 and 50, giving a total length
// of 150.
var fullRangeTimingFunction = new PacedTimingFunction(effect);
fullRangeTimingFunction.setRange({min: 0, max: 1});

// Partial range runs from midpoint of first segment ot midpoint of last
// segment, giving total length of 5 + 20 + 30 + 40 + 25 = 120.
var partialRangeTimingFunction = new PacedTimingFunction(effect);
partialRangeTimingFunction.setRange({min: 0.1, max: 0.9});

test(function() {
  assert_equals(fullRangeTimingFunction.scaleTime(0.5), (3 + 15/40) / 5);
}, 'Full range between bounds');

test(function() {
  assert_equals(fullRangeTimingFunction.scaleTime(0), 0);
}, 'Full range lower bound');

test(function() {
  assert_equals(fullRangeTimingFunction.scaleTime(1), 1);
}, 'Full range upper bound');

test(function() {
  assert_equals(fullRangeTimingFunction.scaleTime(-0.5), 0);
}, 'Full range below lower bound');

test(function() {
  assert_equals(fullRangeTimingFunction.scaleTime(1.5), 1);
}, 'Full range above upper bound');

test(function() {
  assert_equals(partialRangeTimingFunction.scaleTime(0.5), (3 + 5/40) / 5);
}, 'Partial range between bounds');

test(function() {
  assert_equals(partialRangeTimingFunction.scaleTime(0), 0.1);
}, 'Partial range lower bound');

test(function() {
  assert_equals(partialRangeTimingFunction.scaleTime(1), 0.9);
}, 'Partial range upper bound');

test(function() {
  assert_equals(partialRangeTimingFunction.scaleTime(-0.5), 0.1);
}, 'Partial range below lower bound');

test(function() {
  assert_equals(partialRangeTimingFunction.scaleTime(1.5), 0.9);
}, 'Partial range above upper bound');

</script>
